package model.bo;

import java.util.ArrayList;
import java.util.List;

import model.entidade.Usuario;


public class UsuarioBO extends BaseBO<Usuario> {
	
	private static UsuarioBO instancia;
	private static List<Usuario> listaUsuario = null;

	/**
	 * Método executado para garantir a existência de apenas uma instância dessa classe (Singleton).
	 * 
	 * @return uma instância da classe UsuarioBO
	 * @author Zeno
	 * 
	 */
	public static UsuarioBO getInstance() {
		if (instancia == null) {
			instancia = new UsuarioBO();
			listaUsuario = new ArrayList<Usuario>();
		}
		return instancia;
	}

	/**
	 * Método executado para incluir determinado usuário na lista de usuários.
	 * 
	 * @param usuario
	 * @throws Exception
	 * @author Zeno
	 * 
	 */
	@Override
	public void incluir(Usuario usuario) throws Exception {
		listaUsuario.add(usuario);
	}

	/**
	 * Método executado para remover o antigo usuário e adicionar o usuário alterado novamente na lista.
	 * 
	 * @param antigoUsuario que é o usuário que será removido
	 * @param novoUsuario que é o usuário que será adicionado
	 * @throws Exception
	 * @author Zeno
	 * 
	 */
	@Override
	public void alterar(Usuario antigoUsuario, Usuario novoUsuario) throws Exception {
		listaUsuario.remove(antigoUsuario);
		listaUsuario.add(novoUsuario);
	}

	/**
	 * Método executado para excluir determinado usuário na lista de usuários.
	 * 
	 * @param usuario
	 * @throws Exception
	 * @author Zeno
	 * 
	 */
	@Override
	public void excluir(Usuario usuario) throws Exception {
		listaUsuario.remove(usuario);
	}

	/**
	 * Método executado para listar todos os usuários.
	 * 
	 * @param empregado
	 * @return Lista de usuários
	 * @throws Exception
	 * @author Zeno
	 * 
	 */
	@Override
	public List<Usuario> listar() throws Exception {

		List<Usuario> listaUsuario = new ArrayList<Usuario>();
		Usuario usuario = null;
		
		usuario = new Usuario();
		usuario.setId(0l);
		usuario.setNome("admin");
		usuario.setSenha("admin");
		listaUsuario.add(usuario);

		usuario = new Usuario();
		usuario.setId(1l);
		usuario.setNome("gerente");
		usuario.setSenha("gerente");
		listaUsuario.add(usuario);
		
		usuario = new Usuario();
		usuario.setId(2l);
		usuario.setNome("cliente");
		usuario.setSenha("cliente");
		listaUsuario.add(usuario);
		
		return listaUsuario;
		
	}
	
}
